FHIRPath
API
evaluate
Returns a JS object/primitive based on the evaluation.
evaluate(
expression: string,
ctx: unknown,
options?: Options
): NonNullable<unknown>[]
evaluateWithMeta
Returns a @iguhealth/meta-value singular value which contains data along with metadata about the evaluation.
function evaluateWithMeta(
expression: string,
ctx: unknown,
options?: Options,
): MetaValueSingular<NonNullable<unknown>>[];
Arguments
name | type | description |
---|---|---|
expression | string | FHIRPath expression to evaluate. |
ctx | unknown | The context which the fhirpath is being evaluated from (sets $this context). |
options | Object | Includes variables and metadata deriviation functions. |
options.variables | Object | Function | If an object is Record<variableName, variableValue> else (variableName)=> variableValue. |
options.meta | Object | MetaInformation used to zip metadata with value. Used in type functions and operators. |
options.meta.type | string | Root type for ctx. |
options.meta.getSD | (fhir_version: FHIRVersion, type: string) => StructureDefinition | Returns a StructureDefinition based on type passed in. |
Usage
import * as fhirpath from "@iguhealth/fhirpath";
// Default returns javascript object.
expect(fhirpath.evaluate("4 + 5", {})).toEqual([9]);
expect(fhirpath.evaluate("$this.test + 2 * 4", { test: 4 })).toEqual([12]);
// Evaluation with metavalue return (returns value in addition to meta information.)
expect(
evaluateWithMeta(
"$this.name",
{
resourceType: "Patient",
name: [{ given: ["bob"], family: "jameson" }],
},
{
meta: {
type: "Patient",
getSD: (fhirVersion, type: code) => {
const foundSD = sds.find((sd) => sd.type === type);
return foundSD;
},
},
},
).map((v) => v.meta()?.type),
).toEqual(["HumanName"]);
Operations supported
Operation | Description | Supported |
---|---|---|
+ (addition) | Concatenate strings or add values if numeric. | true |
- (subtraction) | Subtracts the right operand from the left operand. | true |
as type specifier | Returns left operand if value is of type specified. | true |
is(type : type specifier) | Filters left operand based on type specifier. | true |
* (multiplication) | Multiplies both arguments. | true |
/ (division) | Divides the left operand by the right operand | true |
| (union collections) | Merge the two collections into a single collection | true |
= (Equals) | Returns true if the left collection is equal to the right collection | true |
!= (Not Equals) | Converse operator of equals returns true if left collection is not equal to right collection | true |
Supported Functions
Name | Description | Supported |
---|---|---|
empty | Returns true if the input collection is empty () and false otherwise. | true |
exists | Returns true if the collection has any elements, and false otherwise. | true |
all | Returns true if for every element in the input collection, criteria evaluates to true. | true |
allTrue | Takes a collection of Boolean values and returns true if all the items are true. | true |
anyTrue | Takes a collection of Boolean values and returns true if any of the items are true. | true |
allFalse | Takes a collection of Boolean values and returns true if all the items are false. | true |
anyFalse | Takes a collection of Boolean values and returns true if any of the items are false. | true |
subsetOf | Returns true if all items in the input collection are members of the collection passed in. | true |
supersetOf | Returns true if all items in the collection passed as the other argument are members of the input collection. | true |
count | Returns the integer count of the number of items in the input collection. | true |
distinct | Returns a collection containing only the unique items in the input collection. | true |
isDistinct | Returns true if all the items in the input collection are distinct. | true |
where | Returns a collection containing only those elements in the input collection based on where expression. | true |
select | Evaluates the projection expression for each item in the input collection. | true |
repeat | A version of select that will repeat the projection and add it to the output collection. | true |
ofType | Returns a collection that contains all items in the input collection that are of the given type. | true |
as | Returns filter same as ofType used for backwards compatibility. | true |